home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1996 February / EnigmA AMIGA RUN 04 (1996)(G.R. Edizioni)(IT)[!][issue 1996-02][Skylink CD III].iso / earcd / util1 / yk211src.lha / Yak_2.11_Src / Prefs / GadTools / Blank_window.c next >
C/C++ Source or Header  |  1995-11-16  |  10KB  |  390 lines

  1. /*
  2.  *  Source machine generated by GadToolsBox V2.0b
  3.  *  which is (c) Copyright 1991-1993 Jaba Development
  4.  *
  5.  *  GUI Designed by : Martin W Scott, Gaël Marziou & Ph. Bastiani
  6.  */
  7.  
  8.  
  9.  
  10.  
  11. #include <exec/types.h>
  12. #include <intuition/intuition.h>
  13. #include <intuition/classes.h>
  14. #include <intuition/classusr.h>
  15. #include <intuition/imageclass.h>
  16. #include <intuition/gadgetclass.h>
  17. #include <intuition/intuitionbase.h>
  18. #include <libraries/gadtools.h>
  19. #include <proto/exec.h>
  20. #include <proto/intuition.h>
  21. #include <proto/gadtools.h>
  22. #include <proto/wb.h>
  23. #include <string.h>
  24.  
  25.  
  26. #include "yak.h"
  27. #include "version.h"
  28. #include "gui.h"
  29. #include "Blank_Window.h"
  30. #include "Settings.h"
  31. #include "yak_locale_strings.h"
  32.  
  33.  
  34. extern struct Catalog    *Catalog;
  35.  
  36. extern LONG (*HandleIDCMP)(VOID);
  37.  
  38. struct Window   *BlankWnd = NULL;
  39. struct Gadget   *BlankGList = NULL;
  40. struct Gadget   *BlankGadgets[Blank_CNT];
  41. UWORD            BlankWidth = 400;
  42. UWORD            BlankHeight = 119;
  43. UBYTE           *BlankWdt = NULL;
  44. BOOL             BlankWdi = FALSE;
  45.  
  46. struct AppWindow      *BlankAppWin;         /* AppWindow pointer */
  47. IMPORT struct MsgPort *AppMsgPort;
  48.  
  49. /* Online help system */
  50. IMPORT void ShowYakHelp(char *, char *);
  51. IMPORT char *PrefsHelp;
  52.  
  53. UBYTE *MBMethod0Labels[4];
  54. UBYTE *ScrBlMethod0Labels[4];
  55.  
  56. static VOID
  57. InitMBMethod0Labels(VOID)
  58. {
  59.     MBMethod0Labels[0] = getString(NONE_STRING);
  60.     MBMethod0Labels[1] = getString(SPRITES_STRING);
  61.     MBMethod0Labels[2] = getString(COPPER_STRING);
  62.     MBMethod0Labels[3] = NULL;
  63. }
  64.  
  65. static VOID
  66. InitScrBlMethod0Labels(VOID)
  67. {
  68.     ScrBlMethod0Labels[0] = getString(NONE_STRING);
  69.     ScrBlMethod0Labels[1] = getString(BLACKSCREEN_STRING);
  70.     ScrBlMethod0Labels[2] = getString(DMA_STRING);
  71.     ScrBlMethod0Labels[3] = NULL;
  72. }
  73.  
  74.  
  75. #define Blank_TNUM 1
  76.  
  77. struct IntuiText BlankIText[Blank_TNUM] = 
  78. {
  79.     2,0,JAM1,261,81,NULL,NULL,NULL 
  80. };
  81.  
  82.  
  83. static VOID
  84. InitBlankITexts(VOID)
  85. {
  86.    BlankIText[0].IText = getString(TIMEOUT_STRING);
  87. }
  88.  
  89.  
  90. UWORD BlankGTypes[] = 
  91. {
  92.         INTEGER_KIND,
  93.         INTEGER_KIND,
  94.         CYCLE_KIND,
  95.         BUTTON_KIND,
  96.         CHECKBOX_KIND,
  97.         CYCLE_KIND
  98. };
  99.  
  100.  
  101. struct NewGadget BlankNGad[] = 
  102. {
  103.         200, 68, 51,14,NULL,NULL,GD_ScrTONum       ,PLACETEXT_LEFT ,NULL ,SCREENTIMEOUT_STRING,
  104.         200, 83, 51,14,NULL,NULL,GD_MouseTONum     ,PLACETEXT_LEFT ,NULL ,MOUSETIMEOUT_STRING,
  105.         200, 19,193,14,NULL,NULL,GD_MBMethod       ,PLACETEXT_LEFT ,NULL ,MOUSEBLANK_METHOD_STRING,
  106.         150,103,100,13,NULL,NULL,GD_Return3        ,PLACETEXT_IN   ,NULL ,OK_STRING,
  107.           7, 35, 26,11,NULL,NULL,GD_BlankMouseOnKey,PLACETEXT_RIGHT,NULL ,BlankMouseOnKey_STRING,
  108.         200,  3,193,14,NULL,NULL,GD_ScrBlMethod    ,PLACETEXT_LEFT ,NULL ,SCREENBLANK_METHOD_STRING
  109. };
  110.  
  111.  
  112. ULONG BlankGTags[] = 
  113. {
  114.         (GTIN_Number),0,(GTIN_MaxChars),4,(STRINGA_Justification),STRINGRIGHT,(TAG_DONE),
  115.         (GTIN_Number),0,(GTIN_MaxChars),4,(STRINGA_Justification),STRINGRIGHT,(TAG_DONE),
  116.         (GTCY_Labels),(ULONG)&MBMethod0Labels[ 0 ],(TAG_DONE),
  117.         (TAG_DONE),
  118.         (GTCB_Scaled),TRUE,(TAG_DONE),
  119.         (GTCY_Labels),(ULONG)&ScrBlMethod0Labels[ 0 ],(TAG_DONE)
  120. };
  121.  
  122.  
  123.  
  124. static VOID
  125. BlankRender(VOID)
  126. {
  127.     UBYTE cnt;
  128.     UWORD X,Y, Width, Height;
  129.  
  130.     ComputeFont(BlankWidth,BlankHeight);
  131.  
  132.     Width = ComputeX( BlankWidth );
  133.  
  134.     X = Y = 0;
  135.     Height = ComputeY(50);
  136.     DrawThinBevelBox( Scr, BlankWnd->RPort, X+OffX,Y+OffY,
  137.                      Width,
  138.                      Height,
  139.                      FALSE );
  140.  
  141.  
  142.     Y += Height;
  143.     Height = ComputeY(100) - Y;
  144.     DrawThinBevelBox( Scr, BlankWnd->RPort, X+OffX,Y+OffY,
  145.                      Width,
  146.                      Height,
  147.                      FALSE );
  148.     BlankIText[ 0 ].LeftEdge  = X +5;
  149.     BlankIText[ 0 ].TopEdge   = Y +3;
  150.  
  151.     Y += Height;
  152.     Height = ComputeY(BlankHeight) - Y;
  153.     DrawThinBevelBox( Scr, BlankWnd->RPort, X+OffX,Y+OffY,
  154.                      Width,
  155.                      Height,
  156.                      FALSE );
  157.                 
  158.     for (cnt = 0; cnt < Blank_TNUM; cnt++) 
  159.     {
  160.         BlankIText[ cnt ].ITextFont = Font;
  161.         PrintIText(BlankWnd->RPort,&BlankIText[ cnt ],OffX,OffY);
  162.     }
  163. }
  164.  
  165.  
  166.  
  167. int
  168. OpenBlankWindow(VOID)
  169. {
  170.         struct NewGadget        ng;
  171.         struct Gadget   *g;
  172.         UWORD           lc,tc;
  173.         WORD            wleft=WindowLeft, wtop=WindowTop;
  174.         UWORD           ww, wh;
  175.  
  176.         ComputeFont(BlankWidth,BlankHeight);
  177.  
  178.         ww = OffX + ComputeX(BlankWidth) + Scr->WBorRight;
  179.         wh = OffY + ComputeY(BlankHeight) + Scr->WBorBottom;
  180.  
  181.         SetUpWindowCoordinates(ww, wh, &wleft, &wtop);
  182.  
  183.         if (! (g = CreateContext(&BlankGList))) 
  184.         {
  185.                 return(1L);
  186.         }
  187.  
  188.         for(lc = 0,tc = 0; lc < Blank_CNT; lc++) 
  189.         {
  190.  
  191.                 CopyMem((char *)&BlankNGad[ lc ],(char *)&ng,(long)sizeof(struct NewGadget));
  192.  
  193.                 ng.ng_VisualInfo = VisualInfo;
  194.                 ng.ng_TextAttr   = Font;
  195.                 ng.ng_LeftEdge   = OffX +ComputeX(ng.ng_LeftEdge);
  196.                 ng.ng_TopEdge    = OffY +ComputeY(ng.ng_TopEdge);
  197.                 ng.ng_Width      = ComputeX(ng.ng_Width);
  198.                 ng.ng_Height     = ComputeY(ng.ng_Height);
  199.  
  200.                 BlankGadgets[ lc ] = g = CreateGadgetA((ULONG)BlankGTypes[ lc ],g,&ng,(struct TagItem *) &BlankGTags[ tc ]);
  201.  
  202.                 while(BlankGTags[ tc ]) 
  203.                         tc += 2;
  204.  
  205.                 tc++;
  206.  
  207.                 if (NOT g)
  208.                         return(2L);
  209.         }
  210.  
  211.     if (NOT (BlankWnd = OpenWindowTags(NULL,
  212.                         WA_Left,         wleft,
  213.                         WA_Top,          wtop,
  214.                         WA_Width,        ww,
  215.                         WA_Height,       wh,
  216.                         WA_IDCMP,        LISTVIEWIDCMP|STRINGIDCMP|CYCLEIDCMP|BUTTONIDCMP|IDCMP_VANILLAKEY|IDCMP_REFRESHWINDOW|IDCMP_RAWKEY,
  217.                         WA_Flags,        WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_SMART_REFRESH,
  218.                         WA_Gadgets,      BlankGList,
  219.                         WA_Title,        BlankWdt,
  220.                         WA_ScreenTitle,  getString(COPYRIGHT_STRING),
  221.                         WA_PubScreen,    Scr,
  222.                         WA_PubScreenName,PubScreenName,
  223.                         TAG_DONE)))
  224.     return(4L);
  225.  
  226.     BlankAppWin = AddAppWindowA(0, 0, BlankWnd, AppMsgPort, NULL);
  227.  
  228.     GT_RefreshWindow(BlankWnd,NULL);
  229.  
  230.     BlankRender();
  231.  
  232.     return(0L);
  233. }
  234.  
  235.  
  236.  
  237. VOID
  238. CloseBlankWindow(VOID)
  239. {
  240.     CloseOneWindow(BlankWnd,NULL,BlankGList,BlankAppWin);
  241.     BlankWnd = NULL;
  242. }
  243.  
  244.  
  245.  
  246.  
  247.  
  248. /* initialise all gadgets of Blank window */
  249.  
  250. static void
  251. InitBlankGadgets(VOID)
  252. {
  253.         InitToggleGadgets(BLANK_WINDOW);
  254.  
  255.         InitWindowGadget(GDX_ScrTONum, GTIN_Number, blanksecs, BLANK_WINDOW);
  256.         InitWindowGadget(GDX_ScrTONum, GA_Disabled, !screenblank, BLANK_WINDOW);
  257.         InitWindowGadget(GDX_MouseTONum, GTIN_Number, mblanksecs, BLANK_WINDOW);
  258.         InitWindowGadget(GDX_MouseTONum, GA_Disabled, !mouseblank, BLANK_WINDOW);
  259.         InitWindowGadget(GDX_MBMethod, GTCY_Active, mouseblank, BLANK_WINDOW);
  260.         InitWindowGadget(GDX_ScrBlMethod, GTCY_Active, screenblank, BLANK_WINDOW);
  261. }
  262.  
  263.  
  264.  
  265.  
  266.  
  267. /* handle Blank window events */
  268. LONG
  269. HandleBlankIDCMP(VOID)
  270. {
  271.     struct IntuiMessage *msg;
  272.     struct Gadget   *gadget;
  273.     ULONG           class;
  274.     UWORD           code;
  275.     LONG            num;
  276.     BOOL            close=FALSE;
  277.     LONG            ret=RET_OKAY;
  278.  
  279.     while (!close && (msg = GT_GetIMsg(BlankWnd->UserPort)))
  280.     {
  281.         class = msg->Class;
  282.         code = msg->Code;
  283.         gadget = (struct Gadget *)msg->IAddress;
  284.         GT_ReplyIMsg(msg);
  285.  
  286.         switch (class)
  287.         {
  288.           case GADGETUP:
  289.           case GADGETDOWN:
  290.             switch (gadget->GadgetID)
  291.             {
  292.               case GD_Return3:
  293.                 CloseBlankWindow();
  294.                 if (!ShowWindowID(ROOT_WINDOW))
  295.                     ret= RET_QUIT;
  296.                 close=TRUE;
  297.                 break;
  298.         
  299.               case GD_ScrTONum:
  300.                 num = GetNumber(gadget);
  301.                 if (num >= 0) 
  302.                     blanksecs = num;
  303.                 else 
  304.                     DisplayBeep(BlankWnd->WScreen);
  305.                 InitWindowGadget(GDX_ScrTONum, GTIN_Number, blanksecs, BLANK_WINDOW);
  306.                 break;
  307.  
  308.               case GD_MouseTONum:
  309.                 num = GetNumber(gadget);
  310.                 if (num >= 0) 
  311.                     mblanksecs = num;
  312.                 else 
  313.                     DisplayBeep(BlankWnd->WScreen);
  314.                 InitWindowGadget(GDX_MouseTONum, GTIN_Number, mblanksecs, BLANK_WINDOW);
  315.                 break;
  316.  
  317.               case GD_BlankMouseOnKey:
  318.                 blankmouseonkey ^= TRUE;
  319.                 break;
  320.  
  321.               case GD_MBMethod:
  322.                 mouseblank = code;
  323.                                 InitWindowGadget(GDX_MouseTONum, GA_Disabled, !mouseblank, BLANK_WINDOW);
  324.                 break;
  325.  
  326.               case GD_ScrBlMethod:
  327.                 screenblank = code;
  328.                                 InitWindowGadget(GDX_ScrTONum, GA_Disabled, !screenblank, BLANK_WINDOW);
  329.                 break;
  330.  
  331.  
  332.             }                   /* switch (gadget->GadgetID) */
  333.             break;
  334.  
  335.           case IDCMP_RAWKEY:
  336.                 /* Help key pressed */
  337.                 if (code == 95)
  338.                 {
  339.                     /* Display the node */
  340.                     ShowYakHelp(PrefsHelp, "Blanking");
  341.                 }
  342.                 break;
  343.  
  344.           case REFRESHWINDOW:
  345.             GT_BeginRefresh(BlankWnd);
  346.             GT_EndRefresh(BlankWnd, TRUE);
  347.             break;
  348.  
  349.         }                       /* switch (class) */
  350.  
  351.     }                           /* while more messages */
  352.  
  353.     return ret;
  354. }
  355.  
  356.  
  357.  
  358. /* show our blank window */
  359. BOOL
  360. ShowBlankWindow(VOID)
  361. {
  362.     if (!BlankWdi)
  363.     {
  364.         BlankWdi = TRUE;
  365.  
  366.         BlankWdt = getString(Blanking);
  367.         LocalizeNGadLabels (Blank_CNT, BlankNGad);
  368.         InitBlankITexts();
  369.         InitMBMethod0Labels ();
  370.         InitScrBlMethod0Labels ();
  371.     }
  372.  
  373.     if (!OpenBlankWindow())     /* like the name says... */
  374.     {
  375.         InitBlankGadgets();
  376.         wndsigflag = 1 << BlankWnd->UserPort->mp_SigBit;
  377.         curwin = BlankWnd;
  378.         curwinID = BLANK_WINDOW;
  379.         HandleIDCMP = HandleBlankIDCMP;
  380.         return TRUE;
  381.     }
  382.  
  383.     FreeGadgets(BlankGList);
  384.     CloseDownScreen();
  385.     curwin =  NULL;
  386.     wndsigflag = 0L;
  387.     return FALSE;
  388. }
  389.  
  390.